package com.cms.recursoshumanos.facade;


import java.io.UnsupportedEncodingException;

import net.rim.device.api.ui.UiApplication;

import com.cms.recursoshumanos.constant.Constant;
import com.cms.recursoshumanos.engine.ScreenEngine;
import com.cms.recursoshumanos.facade.BaseFacade;
import com.cms.recursoshumanos.handler.VacacionesMainScreenHandler;
import com.cms.recursoshumanos.handler.WServiceCall;
import com.cms.recursoshumanos.json.object.JsonObjectGetPlanillaVacaciones;
import com.cms.recursoshumanos.popup.ShowDialogAlert;
import com.cms.recursoshumanos.transport.BBRequest;
import com.cms.recursoshumanos.transport.BBRequestQueue;
import com.cms.recursoshumanos.transport.HttpRequest;
import com.cms.recursoshumanos.ui.vacaciones.PlanillaSolicitudVacacionesScreen;
import com.cms.recursoshumanos.utilities.Tool;

public class PlanillaVacacionesFacade extends BaseFacade implements BBRequest.Listener
{
	private String strUser;
	private String strPass;
	private int intCantidad;
	private String strFechaInic;
	private String strFechaTope;

	private HttpRequest req;
	
	ShowDialogAlert alerta;
	
	public PlanillaVacacionesFacade(VacacionesMainScreenHandler handler, 
										String user,
										String password, 
										int cantidad, 
										String fecha_inicio,
										String fecha_tope)
	{
		this.strUser = user;
		this.strPass  =password;
		this.intCantidad = cantidad;
		this.strFechaInic = fecha_inicio;
		this.strFechaTope = fecha_tope;
	}
	
	public void getPlanillaVacaciones()
	{
		enviarSolicitud( WServiceCall.getInstance().getPlanillaVacaciones(strUser, strPass, intCantidad, strFechaInic, strFechaTope));
	}
	
	public void enviarSolicitud(String envelope_soap) 
	{
		try 
		{
			req = new HttpRequest();
			req.setRequestURL(Constant.URL_WEBSERVICE);	
			req.setPayload(envelope_soap, "UTF-8");
			req.setListener(this);
	        BBRequestQueue.getInstance().addRequest(req);
		} 
		catch (UnsupportedEncodingException e) 
		{
			// TODO Auto-generated catch block
			e.printStackTrace();
		} 
		catch (Exception e)
		{
			e.printStackTrace();
		}
		
        
	}
	
	public void requestStarted(BBRequest request) 
	{
		synchronized (UiApplication.getEventLock()) 
		{
			ScreenEngine.getInstance().showLoadingPopup("Cargando");
		}
		
	}
	
	public void requestCancelled(BBRequest request) 
	{
		ScreenEngine.getInstance().hideLoadingPopup();
		alerta = new ShowDialogAlert("Se cayo la conexion inesperadamente, intente nuevamente");
		alerta.run();
	}

	public void requestFailed(BBRequest request)
	{
		ScreenEngine.getInstance().hideLoadingPopup();
		alerta = new ShowDialogAlert("No se pudo conectar al servidor, intete nuevamente");
		alerta.run();
	}

	public void requestSucceeded(BBRequest request) 
	{
		/*String result = JParserHandler.getInstance().procesarXML(request);
		ScreenEngine.getInstance().hideLoadingPopup();
		this.setValores(result);*/
		
		ScreenEngine.getInstance().hideLoadingPopup();
		alerta = new ShowDialogAlert("Se ha enviado la solicitud satisfactoriamente");
		alerta.run();
		synchronized (UiApplication.getEventLock()) 
		{
			ScreenEngine.getInstance().popScreen(PlanillaSolicitudVacacionesScreen.getInstance());
		}
		
		
	}
	
	public void setValores(String strResult)
	{
		if (strResult.equals(null))
		{
			ShowDialogAlert alerta = new ShowDialogAlert("No se pudo obtener informacion del servidor, chequee su conexion");
			alerta.run();
		}
		else
		{
			JsonObjectGetPlanillaVacaciones.getInstance().fromJSON(strResult);
			if (JsonObjectGetPlanillaVacaciones.getInstance().
					getResultMensaje().equals(Constant.CODE_OK))
			{
				if (JsonObjectGetPlanillaVacaciones.getInstance().
						getResultProceso().equals(Constant.CODE_OK))
				{
					alerta = new ShowDialogAlert("Se ha enviado la planilla satisfactoriamente.");
					alerta.run();
				}
				else
				{
					Tool.getInstance().showMessageError(JsonObjectGetPlanillaVacaciones.getInstance().
						getResultProceso());
				}
			}
			else
			{
				Tool.getInstance().showMessageError(JsonObjectGetPlanillaVacaciones.getInstance().
					getResultMensaje());
			}
			/*if (JsonObjectGetPlanillaVacaciones.getInstance().
					getResultMensaje().equals(Constant.CODE_NOT_OK))
			{
				alerta = new ShowDialogAlert("Error, no se pudo procesar completamente la solicitud. Intente nuevamente luego.");
				alerta.run();
			}
			else if (JsonObjectGetPlanillaVacaciones.getInstance().
					getResultMensaje().equals(Constant.CODE_OK))
			{
				if (JsonObjectGetPlanillaVacaciones.getInstance().
						getResultProceso().equals(Constant.CODE_NOT_OK))
				{
					alerta = new ShowDialogAlert("Error, no se pudo procesar completamente la solicitud. Intente nuevamente luego.");
					alerta.run();
				}
				else if (JsonObjectGetPlanillaVacaciones.getInstance().
						getResultProceso().equals(Constant.CODE_OK))
				{
					alerta = new ShowDialogAlert("Se ha enviado la planilla satisfactoriamente.");
					alerta.run();
				}
			}*/
		}
	}
	
	public void run() 
	{
		/*String strResult = "";
		strResult = WServiceCall.getInstance().getVacaciones(strEmail, strPass);
		try
		{
			
			
	        
		}
		catch (NullPointerException ex)
		{
			LoginScreen.getInstance().limpiar_field();
			alerta = new ShowDialogAlert("No se pudo conectar al servidor");
			alerta.run();
		}
		catch (Exception ex)
		{
			LoginScreen.getInstance().limpiar_field();
			alerta = new ShowDialogAlert("Error General");
			alerta.run();
		}
		*/
		
		
	}
	
}
